package com.weitu.worklicense.service;

import com.weitu.worklicense.entity.WorkLicenseApply;
import com.weitu.worklicense.entity.WorkLicenseApplyCriteria;

import java.util.List;
import java.util.Map;

public interface WorkLicenseApplyService {
    /**
     * 根据条件查询数量
     *
     * @param example 条件对象
     * @return 数量
     */
    int countByCriteria(WorkLicenseApplyCriteria example);

    /**
     * 根据主键查询实体
     *
     * @param id 主键id
     * @return 实体
     */
    WorkLicenseApply selectByPrimaryKey(String id);

    /**
     * 根据条件查询列表
     *
     * @param example 条件对象
     * @return 数据列表
     */
    List<WorkLicenseApply> selectByCriteria(WorkLicenseApplyCriteria example);

    /**
     * 根据主键删除一条数据
     *
     * @param id 主键
     * @return 受影响的行数
     */
    int deleteByPrimaryKey(String id);

    /**
     * 根据主键选择性的更新数据
     *
     * @param record 记录
     * @return 受影响的行数
     */
    int updateByPrimaryKeySelective(WorkLicenseApply record);

    /**
     * 根据ID修改所有字段(必须含ID）
     * @param record 修改字段对象(必须含ID）
     */
    int updateByPrimaryKey(WorkLicenseApply record);

    /**
     * 根据条件选择性的更新数据
     *
     * @param record  记录
     * @param example 条件对象
     * @return 受影响的行数
     */
    int updateByCriteriaSelective(WorkLicenseApply record, WorkLicenseApplyCriteria example);

    /**
     * 选择性的插入一条数据
     *
     * @param record 记录
     * @return 受影响的行数
     */
    int insertSelective(WorkLicenseApply record);

    /**
     * 查询未审批的申请数量
     * @return 数量
     */
    int countByNotAudited();

    /**
     * 查询已审批（待处理）的申请数量
     * @return 数量
     */
    int countByNotHandled();

    /**
     * 根据作业类型查询当日正在进行的数量
     * @return 数量
     */
    List<Map> countByWorkType();
}